package br.academia.dominio;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.academia.util.Validador;

@SuppressWarnings("serial")
@Entity
@Table(name="treino", schema="public")
public class Treino extends PersistDB{
	@Id
	@Column(name="id_treino")
	@SequenceGenerator(allocationSize=1, name = "SEQ_ID_TREINO", sequenceName = "public.seq_id_treino")
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_ID_TREINO")
	private int id;
	
	@Column(length=256)
	private String nome;
	
	@Column
	private String descricao;

	@Column(name="data_inicio")
	@Temporal(TemporalType.DATE)
	private Date dataInicio;

	@Column(name="data_fim")
	@Temporal(TemporalType.DATE)
	private Date dataFim;

	@ManyToOne
	@JoinColumn(name="id_aluno")
	private Aluno aluno;
	
	@ManyToOne
	@JoinColumn(name="id_funcionario")
	private Funcionario funcionario;
	
	public Treino(){
		aluno = new Aluno();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public Date getDataInicio() {
		return dataInicio;
	}

	public void setDataInicio(Date dataInicio) {
		this.dataInicio = dataInicio;
	}

	public Date getDataFim() {
		return dataFim;
	}

	public void setDataFim(Date dataFim) {
		this.dataFim = dataFim;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getDataInicioFormatada() {
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		
		if(Validador.isEmpty(dataInicio)){
			return "";
		}
		
		return sdf.format(dataInicio);
	}
	
	public String getDataFimFormatada() {
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		
		if(Validador.isEmpty(dataFim)){
			return "";
		}
		
		return sdf.format(dataFim);
	}

	public Aluno getAluno() {
		return aluno;
	}

	public void setAluno(Aluno aluno) {
		this.aluno = aluno;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}
}
